//
// Created by abstergo on 24-6-15.
//

#ifndef TBS_CPP_MATCHER_CUH
#define TBS_CPP_MATCHER_CUH

template<typename V, typename F, typename E>
template<typename I>
void Matcher<V, F, E>::operator()(I item) {
  trigger(item);
}

template<typename V, typename F, typename E>
template<typename I>
void Matcher<V, F, E>::trigger(I item) {
  _fun(item);
}

template<typename V, typename F, typename E>
template<typename I>
bool Matcher<V, F, E>::operator==(I item) const {
  return test(item);
}

template<typename V, typename F, typename E>
template<typename I>
bool Matcher<V, F, E>::test(I item) const {
  return _eq.test(_val, item);
}

template<typename V, typename F, typename E>
Matcher<V, F, E>::Matcher(V v, F f, E eq)
	:_val(v), _fun(f), _eq(eq) {}

#endif //TBS_CPP_MATCHER_CUH
